#-*- coding:utf-8 -*-

'''
输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。
假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该压栈
序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。
（注意：这两个序列的长度是相等的）
'''
class Solution:
    def IsPopOrder(*par):
        #输入参数必须为2个参数
        if (len(par)!=2):
            print("请输入两个列表参数！")
            return False
        
        #输入参数必须为序列
        if (type(par[0])!=list or type(par[1]!=list)):
            print("请输入两个列表序列！")
            return False
        pushV=par[0]
        popV=par[1]
        j=0
        stack = []
        #序列不能为空
        if (len(pushV)==0 or len(popV)==0):
            print("序列不能为空！")
            return False
            
        #两个序列长度必须相等
        if (len(pushV)!=len(popV)):
            print("输入的两个序列长度不相等！")
            return False
        
        for i in range(0,len(pushV)):
            
            stack.append(pushV[i])
            while (j<len(popV) and len(stack)>0 and stack[-1]==popV[j]):
                stack.pop()
                j=j+1
        if len(stack)>0:
            print("no")
            return False
        else:
            print("yes")
            return True
        

